typedef struct {
    int queue[10000];
    int top;
} MyStack;

MyStack* myStackCreate() {
    MyStack* obj = (MyStack*)malloc(sizeof(MyStack));
    obj->top = -1;
    return obj;
}

void myStackPush(MyStack* obj, int x) {
    obj->queue[++(obj->top)] = x;
}

int myStackPop(MyStack* obj) {
    return obj->queue[(obj->top)--];
}

int myStackTop(MyStack* obj) {
    return obj->queue[obj->top];
}

bool myStackEmpty(MyStack* obj) {
    return (obj->top == -1);
}

void myStackFree(MyStack* obj) {
    free(obj);
}
